package fr.LesLoutresSauvages.laloutresportive.activities;

import java.util.Timer;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import fr.LesLoutresSauvages.laloutresportive.R;
import fr.LesLoutresSauvages.laloutresportive.util.CustomTimerTask;
import fr.LesLoutresSauvages.laloutresportive.util.Live;

public class SuivreLiveActivity extends Activity
{
  // ** Declaration du Live global a suivre ** //
  static public Live gLiveASuivre;

  // ** Declaration des variables pour manipuler les objets graphiques ** //
  static public TextView suivreTxtVwDescriptionLive;
  private TextView suivreTxtVwTitre;
  private TextView suivreTxtVwMatch;
  private LinearLayout suivreLayEvenements;

  // ** Declaration des attributs de la classe ** //
  private Live liveEnCours;
  private Boolean isLiveCreation;
  private Timer timerCheckServeur;

  @Override
  protected void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_suivre_live);

    this.liveEnCours = SuivreLiveActivity.gLiveASuivre;

    // ** Reception des parametres de l'Intent ** //
    Intent i = getIntent();
    String typeLive = i.getStringExtra("Type");
    if ( "LiveCreation".equals(typeLive) )
    {
      this.isLiveCreation = true;
    }
    if ( "LiveRecherche".equals(typeLive) )
    {
      this.isLiveCreation = false;
    }
    
//    Toast.makeText(this, "Un live reçu de type : " + typeLive + "", Toast.LENGTH_SHORT).show();  // TODO : a suppr au final
//    Toast.makeText(this, "this.liveEnCours.toString() : " + this.liveEnCours.toString() + "", Toast.LENGTH_LONG).show();  // TODO : a suppr au final
    
    // ** Mapping des variables pour manipuler les objets graphiques ** //
    SuivreLiveActivity.suivreTxtVwDescriptionLive = (TextView) findViewById(R.id.suivreTxtVwDescriptionLive);
    this.suivreTxtVwTitre = (TextView) findViewById(R.id.suivreTxtVwTitre);
    this.suivreTxtVwMatch = (TextView) findViewById(R.id.suivreTxtVwMatch);
    this.suivreLayEvenements = (LinearLayout) findViewById(R.id.suivreLayEvenements);
    

    // ** Initialisation des autres variables ** //
    this.timerCheckServeur = new Timer();
    
    
    this.majLiveEnCours(this);

  }
  
  @Override
  protected void onStart()
  {
    super.onStart();

    // ** Demarrage du timer ** //
    this.timerCheckServeur.scheduleAtFixedRate(
        new CustomTimerTask(this), // task to be scheduled.
        10*1000, // delay in milliseconds before task is to be executed.
        30*1000 // time in milliseconds between successive task executions.
       );
  }
  @Override
  public boolean onCreateOptionsMenu(Menu menu)
  {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_suivre_live, menu);
    return true;
  }

  @Override
  protected void onStop()
  {
    super.onStop();
    this.timerCheckServeur.cancel();
    Toast.makeText(this, "timer canceled", Toast.LENGTH_SHORT);  // TODO : verifier si le timer est bien tué en quittant cette activity
    
    SuivreLiveActivity.gLiveASuivre = null;

  }
  
  public void majLiveEnCours(Context context)
  {
    this.suivreTxtVwTitre.setText(this.liveEnCours.getNom());

    this.suivreTxtVwMatch.setText(this.liveEnCours.getEquipe1() + " " + this.liveEnCours.getScoreEquipe1() + " - " + this.liveEnCours.getScoreEquipe2() + " " + this.liveEnCours.getEquipe2());

    String temp = "";
    temp += "ID du Live : " + this.liveEnCours.getId() + "\n";
    temp += "Nom du Live : " + this.liveEnCours.getNom() + "\n";
    temp += "Sport : " + this.liveEnCours.getSport().getNom() + "\n";
    temp += "Competition : " + this.liveEnCours.getCompetition().getNom() + "\n";
    temp += "Equipe 1 : " + this.liveEnCours.getEquipe1() + "\n";
    temp += "Equipe 2 : " + this.liveEnCours.getEquipe2() + "\n";
    temp += "Score Equipe 1 : " + this.liveEnCours.getScoreEquipe1() + "\n";
    temp += "Score Equipe 2 : " + this.liveEnCours.getScoreEquipe2() + "\n";
    temp += "Departement : " + this.liveEnCours.getDepartement().getNom() + " (" + this.liveEnCours.getDepartement().getCode() + ")\n";
    temp += "Nom du commentateur : " + this.liveEnCours.getNomCommentateur() + "\n";
    temp += "Latitude : " + this.liveEnCours.getLatitude() + "\n";
    temp += "Longitude : " + this.liveEnCours.getLongitude() + "\n";
    temp += "Description breve : " + this.liveEnCours.getShortDescription() + "\n";
    temp += "Description : " + this.liveEnCours.getLongDescription() + "\n";
    temp += "Heure de debut : " + this.liveEnCours.getDebut() + "\n";
    SuivreLiveActivity.suivreTxtVwDescriptionLive.setText(temp);
    
    this.suivreLayEvenements.removeAllViews();
    for ( int i=0 ; i<this.liveEnCours.arrliEvenements.size() ; i++ )
    {
      TextView t = new TextView(context);

      t.setText( this.liveEnCours.arrliEvenements.get(i).getCommentaire() );

      this.suivreLayEvenements.addView(t);
      
    }
  }
}
